--[[
初始化日志系统模块
功能：初始化HUD日志系统，并提供全局日志配置
--]]

-- 导入需要的模块
local HUD系统
local 调试输出

-- 安全导入模块
pcall(function()
    HUD系统 = require("logging_and_debugging.HUD系统")
    调试输出 = require("logging_and_debugging.调试输出")
end)

-- 日志系统配置
local 日志配置 = {
    -- 是否启用日志
    启用日志 = true,
    -- 日志级别: 1=调试, 2=信息, 3=警告, 4=错误, 5=关键
    日志级别 = 1,
    -- HUD配置
    HUD配置 = {
        最大日志数 = 6,
        字体大小 = 10,
        字体颜色 = "0xffff0000",
        背景颜色 = "0x60ffffff",
        X位置 = 0,
        Y位置 = 80,
        宽度 = 500,
        高度 = 22,
        日志格式 = "{时间} {内容}"
    }
}

-- 初始化日志系统
local function 初始化日志系统(配置)
    -- 合并配置
    配置 = 配置 or {}
    for k, v in pairs(配置) do
        日志配置[k] = v
    end
    
    -- 检查是否要禁用日志
    if 日志配置.启用日志 == false then
        print("日志系统已禁用")
        return false
    end
    
    -- 尝试初始化HUD
    local 初始化成功 = false
    if HUD系统 then
        pcall(function()
            -- 初始化HUD系统
            local hud_id = HUD系统.初始化HUD系统(日志配置.HUD配置)
            if hud_id then
                初始化成功 = true
                -- 使用全局调试输出函数输出信息
                调试输出("日志系统初始化成功", 500)
            end
        end)
    end
    
    if not 初始化成功 then
        print("警告: HUD系统初始化失败或未找到")
    end
    
    -- 导出全局日志函数简化使用
    _G.日志 = function(内容, 级别, 等待时间)
        级别 = 级别 or "信息"
        
        -- 检查日志级别
        local 级别数字 = {调试=1, 信息=2, 警告=3, 错误=4, 关键=5}
        if 级别数字[级别] and 级别数字[级别] < 日志配置.日志级别 then
            return 内容
        end
        
        -- 使用调试输出函数
        return 调试输出(内容, 等待时间)
    end
    
    -- 为不同级别创建快捷函数
    _G.调试日志 = function(内容, 等待时间) return _G.日志(内容, "调试", 等待时间) end
    _G.信息日志 = function(内容, 等待时间) return _G.日志(内容, "信息", 等待时间) end
    _G.警告日志 = function(内容, 等待时间) return _G.日志(内容, "警告", 等待时间) end
    _G.错误日志 = function(内容, 等待时间) return _G.日志(内容, "错误", 等待时间) end
    _G.关键日志 = function(内容, 等待时间) return _G.日志(内容, "关键", 等待时间) end
    
    return 初始化成功
end

-- 获取日志配置
local function 获取日志配置()
    return 日志配置
end

-- 设置日志级别
local function 设置日志级别(级别)
    if type(级别) == "number" and 级别 >= 1 and 级别 <= 5 then
        日志配置.日志级别 = 级别
        return true
    elseif type(级别) == "string" then
        local 级别映射 = {调试=1, 信息=2, 警告=3, 错误=4, 关键=5}
        if 级别映射[级别] then
            日志配置.日志级别 = 级别映射[级别]
            return true
        end
    end
    return false
end

-- 启用或禁用日志
local function 设置日志状态(启用)
    日志配置.启用日志 = (启用 == true)
    if HUD系统 then
        pcall(function()
            HUD系统.切换HUD显示(启用)
        end)
    end
    return 日志配置.启用日志
end

-- 显示日志配置
local function 显示日志配置()
    local 级别名称 = {"调试", "信息", "警告", "错误", "关键"}
    local 配置信息 = string.format(
        "日志配置:\n启用=%s\n级别=%s(%d)\nHUD最大日志数=%d",
        日志配置.启用日志 and "是" or "否",
        级别名称[日志配置.日志级别] or "未知",
        日志配置.日志级别,
        日志配置.HUD配置.最大日志数
    )
    
    调试输出(配置信息, 3000)
    return 配置信息
end

-- 导出模块
return {
    初始化日志系统 = 初始化日志系统,
    获取日志配置 = 获取日志配置,
    设置日志级别 = 设置日志级别,
    设置日志状态 = 设置日志状态,
    显示日志配置 = 显示日志配置
} 